bitkeeper revision 1.1697 (42a843b5ZTFdEDRffbieMVV4Kl42cQ)
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Thu, 9 Jun 2005 13:27:17 +0000 (13:27 +0000)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Thu, 9 Jun 2005 13:27:17 +0000 (13:27 +0000)
Multicall macro should mark all caller-saved registers as clobbered
across the function call.
Signed-off-by: Scott Parish <srparish@us.ibm.com>
xen/include/asm-x86/multicall.h

index f4bac0a150f62c2edf23ff70ae77708361ea1da1..23d7c8e5ba4526fd40c96a9bd49838f87d81c6ae 100644 (file)
@@ -24,7 +24,9 @@
             "callq *(%%rax); "                           \
             "movq  %%rax,"STR(MULTICALL_result)"(%0); "  \
             : : "b" (_call)                              \
-            : "rax", "rdi", "rsi", "rdx", "rcx", "r8" ); \
+              /* all the caller-saves registers */       \
+            : "rax", "rcx", "rdx", "rsi", "rdi",         \
+              "r8",  "r9",  "r10", "r11" );              \
     } while ( 0 )
 
 #else
@@ -42,7 +44,9 @@
             "call  *hypercall_table(,%%eax,4); "       \
             "movl  %%eax,"STR(MULTICALL_result)"(%0); "\
             "addl  $20,%%esp; "                        \
-            : : "b" (_call) : "eax", "ecx", "edx" );   \
+            : : "b" (_call)                            \
+              /* all the caller-saves registers */     \
+            : "eax", "ecx", "edx" );                   \
     } while ( 0 )
 
 #endif